package com.timedomain.him.remake.utils;

import android.content.Context;
import android.content.SharedPreferences;
import android.util.AndroidRuntimeException;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class AppSettings {

    public static int morningCallHour = 6; // 早安电话小时
    public static int morningCallMinute = 30; // 早安电话分钟

    public static long morningCallDateStamp = 0; // 上一次早安模式的日期

    public static boolean morningCallIsManual = false; // 是否需要晚安对话触发早安电话
    public static boolean nightChat = false; // 是否进行了晚安对话（即使开启了自动，进行晚安对话之后也会影响到下一次的设置)
    public static long nightChatDay = -1; // 上次进行晚安对话的时间
    public static boolean nightChatRequiredMorningCall = false; // 晚安对话中是否指定了时间（即使开启了自动，进行晚安对话之后也会影响到下一次的设置)
    public static long manualMorningCallDate = 0; // 晚安对话中约定的下次早安电话的时间

    public static long readedChatMessageTime = -1;

    public static boolean firstRun = true;
    public static boolean hasSeenWelcomeMessage = false; // 是否显示 经过AI世界与时空通道管理员的共同努力 消息
    public static long lastNotificationTime = -1;
    public static HashSet<String> worldTreeFlags = new HashSet<>();

    public static long lastChatMessageTime = -1;
    public static String savedWorldState = "[::Begin]";

    public static HashSet<String> unreadNeuralMorningCall = new HashSet<>(); // 未听过的非限定早安电话列表
    public static HashSet<String> unreadWeekDayMorningCall = new HashSet<>(); // 未听过的工作日限定早安电话
    public static HashSet<String> unreadWeekendMorningCall = new HashSet<>(); // 未听过的周末限定早安电话

    public static HashSet<String> filteredNightStories = new HashSet<>(); // 晚安模式中不想听的故事
    public static int nightModeStoryCount = 3; // 晚安模式的故事数量
    public static int nightModeDuration = 30; // 晚安模式的长度（分钟）
    public static boolean nightModeIgnoreBattery = false; // 晚安模式忽略充电状态

    public static int playerLoopMode = 1; // 播放器模式下的循环模式 0-单个循环 1-列表循环 2-随机播放

    public static boolean hasSeenBatteryOptimizationDialog = false; // 是否已经显示过请求电池优化的对话框

    public static float nightModeVolumeAdjustment = 0.25f; //晚安模式呼吸声音量

    public static void loadSettings(Context ctx){
        try{
            SettingUtils.loadAllSetting(ctx,AppSettings.class);
        }catch (Exception ex){
            throw new AndroidRuntimeException(ex);
        }
    }
    public static void saveSettings(Context ctx){
        try{
            SettingUtils.saveAllSetting(ctx,AppSettings.class);
        }catch (Exception ex){
            throw new AndroidRuntimeException(ex);
        }
    }


}
